package com.hmall.mapper;

import com.hmall.model.MallProduct;
import com.hmall.util.MyMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Repository
public interface MallProductMapper extends MyMapper<MallProduct> {

    //根据产品id查询生成订单的对象
    Map<String,Object> selectByProductIdQuk(@Param("productId") Integer productId);
    Integer selectShopIdByProductId(@Param("productId") Integer productId);
    //商家ID和产品ID查询商家的产品
    List<MallProduct> selectShopByProductId(@Param("shopId") Integer shopId);

    List<MallProduct> selectList();

    List<MallProduct> selectList2();

    List<MallProduct> selectByNameAndProductId(@Param("productName") String productName, @Param("productId") Integer productId);

    List<MallProduct> selectByNameAndCategoryIds(@Param("productName") String productName, @Param("categoryIdList") List<Integer> categoryIdList);

    Integer findByProductName(@Param("productName") String productName);

    List<MallProduct> listHotProduct(@Param("cout") int cout);

    MallProduct selectByProductId(@Param("productId") int productId);

    int selectCategoryByProductId(@Param("productId") int productId);

    List<MallProduct> selectProductByCategoryIdAndHot(@Param("categoryId") int categoryId, @Param("categoryComNum") int categoryComNum);

    List<MallProduct> listProductByType(@Param("categoryId") String categoryId);


    List<String> listFinenessAndPoreNum(@Param("typeId") String typeId, @Param("fineId") String fineId, @Param("glossId") String gloss, @Param("gradeId") String grade);



//    List<String> listGloss(@Param("typeId") String typeId, @Param("fineId") String fineId, @Param("glossId") String gloss, @Param("gradeId") String grade);

    List<String> listGloss(@Param("typeName") String typeName);

//    List<String> listGrade(@Param("typeId") String typeId, @Param("fineId") String fineId, @Param("glossId") String gloss, @Param("gradeId") String grade);

    List<String> listGrade(@Param("typeName") String typeName);

    List<MallProduct> listComProduct(@Param("typeName") String typeName, @Param("fineName") String fineName, @Param("poreName") String poreName, @Param("glossName") String glossName);

    List<String> listType(@Param("parentId") int parentId);


    List<String> listFineAndPore(@Param("typeName") String typeName);


    BigDecimal getPirce(@Param("productId") Integer productId);

    int getStock(@Param("productId") Integer productId);

    List<MallProduct> listHotPush(@Param("hotCount") int hotCount);

    List<MallProduct> listSimilarPush(@Param("similarCount") int similarCount);

    List<Integer> listProductIdByType(@Param("typeName") String typeName);

    //分页总数
    Integer selectCountData(@Param("typeName") String typeName, @Param("fineName") String fineName, @Param("poreName") String poreName,
                            @Param("glossName") String glossName, @Param("gradeName") String gradeName);

    //分页
    List<Map<String,Object>> selectByPage(@Param("typeName") String typeName, @Param("fineName") String fineName, @Param("poreName") String poreName,
                                          @Param("glossName") String glossName, @Param("gradeName") String gradeName,
                                          @Param("pageStart") Integer pageStart, @Param("pageSize") Integer pageSize);

    List<MallProduct> listUserLike(@Param("pageStart") int pageStart, @Param("pageSize") int pageSize);

    int listUserLikeCount();


    List<MallProduct> selectProductList(@Param("productIdList") List<Integer> productIdList);

    //返回图文介绍
    String selectContentById(@Param("productId") Integer productId);
    //通过id查询型号
    String  selectModelByProductId(@Param("productId") Integer productId);

    List<MallProduct> selectByShopId(@Param("shopId") Integer shopId);
}